package com.imooc.scala.course07

/**
  * 匿名函数：函数式可以命名的，也可以不命名
  * (参数名，参数类型) => 函数体
  */
object FunctionApp {
  def main(args: Array[String]): Unit = {

//    def sayHello(name:String): Unit ={
//      println(name)
//    }
//
//    //将匿名函数传递给一个变量， 注意=>
//   val func = (x:Int) => x+1
//    println(func(1))

    //将匿名函数传递给一个函数  （将函数名与变量之间用=剥离开,并将= 变成 =>）
//    def add(x:Int,y:Int) = x+y
//    def add= (x:Int,y:Int) => {x+y}
//    println(add(1,2))
//
//
//    def sum(a:Int,b:Int) = a+b
//    println(sum(2,3))
//    //改写 为
//    def sum2(a:Int)(b:Int) = a+b
//    println(sum2(2)(7))

    val l = List(1,2,3,4,5,6,7,8)
//    println(l.map(x=>x*2))
//    println(l.map(_*2))
//    l.map(_*2).foreach(println)
//    l.map(_*2).filter(_>8).foreach(println)
//    l.take(3).foreach(println)
//    println(l.reduce(_+_)) //两两相加
//    println(l.reduceLeft(_-_))
//    println(l.reduceRight(_-_))
//    println(l.fold(0)(_-_))
//    val f = List(List(1,2),List(3,4),List(5,6))
//    println(f.flatten)
//    //flatMap  相当于flatten和map一起的操作
//    f.map(_.map(_*2))// 返回的是list 中的list
//    f.flatMap(_.map(_*2)) // 返回一个list

  val a =scala.io.Source.fromFile("D:\\baiduYunDown\\a.txt").mkString
    val txts = List(a)
    txts.flatMap(_.split(",")).map(x=>(x,1)).foreach(println)
    //为什么不行？
//    txts.flatMap(_.split(",")).map(lambda x :(x,1)).foreach(println)











  }

}
